home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / scilab / demos / tracking / track.dem
Text File  |  1999-09-16  |  1KB  |  58 lines

  1. //rand('seed',0)
  2. rand('normal')
  3. nx=5;
  4. ny=1;
  5. nu=3;
  6. Plant=ssrand(ny,nu,nx);
  7. J=rand(Plant(5));Plant(5)=0*J;
  8. [F,G,H,J]=Plant(2:5);
  9. nw=4;
  10. nuu=2;
  11. A=rand(nw,nw);
  12. st=maxi(real(spec(A)));A=A-st*eye(A);
  13. B=rand(nw,nuu);
  14. C=2*rand(ny,nw);
  15. D=0*rand(C*B);
  16. xx0=0*ones(nw,1);
  17. Model=syslin('c',A,B,C,D,xx0);
  18. // Input to Model (t is a vector), nuu components
  19. deff('[ut]=uu(t)','ut=[sin(3*t);cos(0.5*t)]');comp(uu);
  20. // Signal to track
  21. dt=0.05;tmax=60;
  22. instants=0:dt:tmax;
  23. totrack=flts(uu(instants),dscr(Model,dt));    //Signal
  24. xbasc();
  25. //plot2d(instants',totrack');
  26. [L,M,T]=gfrancis(Plant,Model);
  27.  
  28. //    Stabilizing the plant
  29. K=-ppol(F,G,-0.3*ones(1,nx));
  30.  
  31. //[K,L,M,err]=deskre(Plant,Model,-0.3,-0.5,100);T=0*T;
  32. // Bigsyst= closed loop system: um --> [yplant;ymodel]. 
  33. // full state gain is [K, L - K*T] * (xplant, xmodel) + M * umodel
  34. BigA=[F+G*K,G*(L-K*T);
  35.       0*ones(nw,nx),A];
  36. BigC=[H+J*K,J*(L-K*T);
  37.       0*ones(ny,nx),C];
  38. BigB=[G*M;
  39.        B];
  40. BigD=[J*M;
  41.        D];
  42.  
  43. x0=ones(nx,1);
  44. BigX0=[x0;xx0];
  45. Bigsyst=dscr(syslin('c',BigA,BigB,BigC,BigD,BigX0),dt);
  46.  
  47.  
  48. z=flts(uu(instants),Bigsyst);
  49. //plot2d(instants',z(1,:)',-1,'000');
  50. xbasc(0);xset("window",0);
  51. plot2d([instants',instants'],[totrack(1,:)',z(1,:)']);xtitle('tracking');
  52. //xbasc(1);driver("Rec");xset("window",1);//xselect();
  53. //plot2d(totrack(1,:)',z(1,:)'); 
  54. clear uu z bigsyst bigx0  x0 gfrancis bigd bigb bigc biga k l
  55. clear instants tmax dt  model plant a nuu nw f g h j
  56. clear totrack m t d c b st nx nu ny xx0
  57.  
  58.